Micron Document
██████╗ ███████╗████████╗██╗██████╗ ███████╗██████╗ ██╗ █████╗
██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗██╔════╝██╔══██╗██║██╔══██╗
██████╔╝█████╗ ██║ ██║██████╔╝█████╗ ██║ ██║██║███████║
██╔══██╗██╔══╝ ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██║██╔══██║
██║ ██║███████╗ ██║ ██║██║ ███████╗██████╔╝██║██║ ██║
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═════╝ ╚═╝╚═╝ ╚═╝


🬧 The NomadNet Encyclopedia | Archives | Info
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b

🔍 Search

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Override
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
Nella mwcwprogrammazione orientata agli oggetti, lmwda'mwdqmwdgoverride è un'operazione di riscrittura di un mwdwmetodo mweaereditato.

In essa assume notevole importanza la possibilità di creare mwegclassi a partire da classi già esistenti (ereditarietà). La classe nuova che eredita quella esistente può avere metodi ereditati che possono essere riscritti per le nuove necessità.

Contents

Note

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Esempio in Java

Definiamo ora la prima classe, mwfgPunto:

public class Punto {
private int a, b;
public Punto (int a, int b) {
this.a = a;
this.b = b;
}
public void setA (int a) {
this.a = a;
}
public int getA () {
return a;
}
public void setB (int b) {
this.b = b;
}
public int getB () {
return b;
}
public double distanza_origine () {
int x = (a*a)+(b*b);
return Math.sqrt(x);
}
}

Ora implementiamo invece la classe mw6wPunto3D che eredita dalla classe mw7aPunto

public class Punto3D extends Punto {
private int c;
public Punto3D (int a, int b, int c) {
super (a, b);
this.c = c;
}
public void setC (int c) {
this.c = c;
}
public int getC () {
return c;
}
public double distanza_origine () {
int x = (getA() * getA()) + (getB() * getB()) + (c * c);
return Math.sqrt(x);
}
}

È stato possibile ridefinire il blocco di codice del metodo mwaaydistanza_origine() per introdurre la terza coordinata (mwaacvariabile mwaagc), affinché il calcolo della distanza sia eseguito correttamente nella classe mwaakPunto3D. La chiamata al mwaaocostruttore della mwaassuperclasse è avvenuta attraverso una mwaawsintassi speciale che sfrutta il mwaa0mwaa4super. Tale istruzione (mwaa8mwabasupermwabe(mwabiamwabm,mwabq mwabubmwaby)) deve essere la prima del costruttore e non potrà essere inserita all'interno di un metodo che non sia un costruttore.

Lmwabg'mwabkoverride impone delle regole da seguire:

• Il metodo ridefinito ha la stessa forma del metodo originale della superclasse;
• Il metodo ridefinito nella mwab0sottoclasse non deve essere meno accessibile del metodo originale della superclasse. Per esempio, se un metodo ereditato è dichiarato protetto, non si può ridefinire privato, semmai pubblico;
• Il tipo di ritorno del metodo deve coincidere con quello del metodo che si sta riscrivendo.

In realtà, dalla mwacaversione 5 di Java in poi, il tipo di ritorno del metodo può coincidere anche con una sottoclasse del tipo di ritorno del metodo originale. In questo caso si parla di "tipo di ritorno covariante". Per esempio, sempre considerando il rapporto di ereditarietà che sussiste tra le classi mwacePunto e mwaciPunto3D, se nella classe mwacmPunto fosse presente il seguente metodo:

public Punto getAddress() {
return this;
}

allora sarebbe legale implementare il seguente Lmwadk'mwadooverride nella classe mwadsPunto3D

public Punto3D getAddress() {
return this;
}

Annotazione sull'override

Uno degli errori più comuni che può commettere un programmatore è sbagliare un mwafioverride. Ovvero ridefinire in maniera non corretta un metodo che si vuole riscrivere in una sottoclasse, magari digitando una lettera minuscola piuttosto che maiuscola, o sbagliando il numero di parametri in mwafminput. in tali casi il mwafqcompilatore non segnalerà errori, dal momento che non può intuire il tentativo di mwafuoverride in atto. Quindi, per esempio, il seguente codice in Java:

public class MiaClasse {
...
public String tostring() { // per avere l'override, si dovrebbe scrivere toString e non tostring
...
}
}

è compilato correttamente, ma non sussisterà nessun mwahioverride in mwahmMiaClasse. Il grosso problema è che questo errore si presenterà in fase di esecuzione e non è detto che lo si riesca a correggere velocemente. Per ovviare a questo problema, occorre utilizzare l'mwahqannotazione mwahumwahy@Override presente nel mwahcpackage mwahgmwahkjavamwaho.mwahslangmwahw.. Tale annotazione serve a marcare i metodi che vogliono essere la riscrittura di metodi ereditati. Essa richiede l'uso di un carattere del tutto nuovo alla sintassi Java: mwah0@cite-ref-1[1]. Nel nostro esempio, il metodo verrà marcato nel seguente modo:

public class MiaClasse {
...
@Override
public String toString() {
...
}
}

Se si violasse qualche regola dellmwaj8'mwakaoverride, otterremo un errore direttamente in compilazione.

Note

cite-note-11. L'annotazionemwakcmwakg@Override in Java 5 è opzionale ma utile.

Collegamenti esterni

• citereffoldoc(EN) Denis Howe, overriding, in Free On-line Dictionary of Computing. Disponibile con licenza mwak4GFDL